// 导入模块
import { useUserStore } from "@/stores/user";
import Request from "luch-request";




// 实例化网络请求
const request = new Request({
  // 接口基地址
  baseURL: "https://consult-api.itheima.net",
  custom: {
    isShowLoading: true,
  },
});
const whitUrl = ['/code', '/login', '/login/password']
request.interceptors.request.use(
  (config) => {
    // 配置请求头
    if (config.custom?.isShowLoading) {
      uni.showLoading({
        title: "加载中...",
      });
    }
    const stroge = useUserStore()
    if (stroge.token&&!whitUrl.includes(config.url!)) {
      config.header = {
        ...config.header,
        Authorization: `Bearer ${stroge.token}`
      };
    }
  
    return config;
  },
  (err) => {
    return Promise.reject(err);
  }
);

request.interceptors.response.use(
  (res) => {
    uni.hideLoading();
    // 响应成功
    if (res.data.code !== 10000) {
      uni.showToast({
        title: res.data.message,
        icon: "none",
      });
      // 主动设置 Promise 为异常，可以通过 try catch 捕获
      return Promise.reject(res.data);
    }
    // 简化服务器返回的结果
    return res.data.data;
  },
  (error) => {
    uni.hideLoading();
    // 401 表示未登录(后端同事定的规则)
    if (error.data.code === 401) {
      uni.showToast({
        title: error.data.message,
        icon: "none",
      });
      uni.redirectTo({url: '/pages/login/login'})
    }
    return Promise.reject(error);
  }
);

// 导出配置好的模网络模块
export { request };
